Micron Document
🎖️GitЯра🎖️

Node / meshtastic / Meshtastic-Android / files / app / src / main / java / com / geeksville / mesh / ui / settings / radio / RadioConfig.kt

Displaying Raw • Download

app/src/main/java/com/geeksville/mesh/ui/settings/radio/RadioConfig.kt ui_message_list (be3f882f) Text, 6.70 KB

T8b949e/*
* Copyright (c) 2025 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

Tff7b72package T7ee787com.geeksville.mesh.ui.settings.radio

Tff7b72import T7ee787androidx.compose.foundation.layout.Column
Tff7b72import T7ee787androidx.compose.foundation.layout.padding
Tff7b72import T7ee787androidx.compose.material.icons.Icons
Tff7b72import T7ee787androidx.compose.material.icons.filled.Download
Tff7b72import T7ee787androidx.compose.material.icons.filled.Upload
Tff7b72import T7ee787androidx.compose.material.icons.rounded.BugReport
Tff7b72import T7ee787androidx.compose.material.icons.rounded.CleaningServices
Tff7b72import T7ee787androidx.compose.material3.MaterialTheme
Tff7b72import T7ee787androidx.compose.material3.Text
Tff7b72import T7ee787androidx.compose.runtime.Composable
Tff7b72import T7ee787androidx.compose.runtime.LaunchedEffect
Tff7b72import T7ee787androidx.compose.runtime.getValue
Tff7b72import T7ee787androidx.compose.runtime.mutableStateOf
Tff7b72import T7ee787androidx.compose.runtime.remember
Tff7b72import T7ee787androidx.compose.runtime.setValue
Tff7b72import T7ee787androidx.compose.ui.Modifier
Tff7b72import T7ee787androidx.compose.ui.res.stringResource
Tff7b72import T7ee787androidx.compose.ui.tooling.preview.Preview
Tff7b72import T7ee787androidx.compose.ui.unit.dp
Tff7b72import T7ee787com.geeksville.mesh.R
Tff7b72import T7ee787com.geeksville.mesh.navigation.AdminRoute
Tff7b72import T7ee787com.geeksville.mesh.navigation.ConfigRoute
Tff7b72import T7ee787com.geeksville.mesh.navigation.ModuleRoute
Tff7b72import T7ee787com.geeksville.mesh.navigation.Route
Tff7b72import T7ee787com.geeksville.mesh.navigation.SettingsRoutes
Tff7b72import T7ee787com.geeksville.mesh.ui.common.components.TitledCard
Tff7b72import T7ee787com.geeksville.mesh.ui.common.theme.AppTheme
Tff7b72import T7ee787com.geeksville.mesh.ui.common.theme.StatusColors.StatusRed
Tff7b72import T7ee787com.geeksville.mesh.ui.settings.components.SettingsItem
Tff7b72import T7ee787com.geeksville.mesh.ui.settings.radio.components.WarningDialog

Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffLongMethodTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffCyclomaticComplexMethodTa5d6ff"Tb4b4b4)
Tf0883e@Composable
Tff7b72fun Td2a8ffRadioConfigItemListTb4b4b4(
Te6edf3stateTb4b4b4: Te6edf3RadioConfigStateTb4b4b4,
Te6edf3isManagedTb4b4b4: Tffa657BooleanTb4b4b4,
Te6edf3excludedModulesUnlockedTb4b4b4: Tffa657Boolean Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3onRouteClickTb4b4b4: Tb4b4b4(Te6edf3EnumTff7b72<Tff7b72*Tff7b72>Tb4b4b4) Tff7b72-Tff7b72> Tffa657Unit Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onImportTb4b4b4: Tb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657Unit Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onExportTb4b4b4: Tb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657Unit Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onNavigateTb4b4b4: Tb4b4b4(Te6edf3RouteTb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4,
Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3enabled Tff7b72= Te6edf3stateTb4b4b4.Te6edf3connected Tff7b72&Tff7b72& Tff7b72!Te6edf3stateTb4b4b4.Te6edf3responseStateTb4b4b4.Te6edf3isWaitingTb4b4b4(Tb4b4b4) Tff7b72&Tff7b72& Tff7b72!Te6edf3isManaged
Tff7b72var Te6edf3modules Tff7b72by Te6edf3remember Tb4b4b4{ Te6edf3mutableStateOfTb4b4b4(Te6edf3ModuleRouteTb4b4b4.Te6edf3filterExcludedFromTb4b4b4(Te6edf3stateTb4b4b4.Te6edf3metadataTb4b4b4)Tb4b4b4) Tb4b4b4}

Te6edf3LaunchedEffectTb4b4b4(Te6edf3excludedModulesUnlockedTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3excludedModulesUnlockedTb4b4b4) Tb4b4b4{
Te6edf3modules Tff7b72= Te6edf3ModuleRouteTb4b4b4.Te6edf3entries
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3modules Tff7b72= Te6edf3ModuleRouteTb4b4b4.Te6edf3filterExcludedFromTb4b4b4(Te6edf3stateTb4b4b4.Te6edf3metadataTb4b4b4)
Tb4b4b4}
Tb4b4b4}

Te6edf3Column Tb4b4b4{
Te6edf3TitledCardTb4b4b4(Te6edf3title Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3radio_configurationTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3isManagedTb4b4b4) Tb4b4b4{
Te6edf3ManagedMessageTb4b4b4(Tb4b4b4)
Tb4b4b4}

Te6edf3ConfigRouteTb4b4b4.Te6edf3filterExcludedFromTb4b4b4(Te6edf3stateTb4b4b4.Te6edf3metadataTb4b4b4)Tb4b4b4.Te6edf3forEach Tb4b4b4{
Te6edf3SettingsItemTb4b4b4(Te6edf3text Tff7b72= Te6edf3stringResourceTb4b4b4(Tffa657itTb4b4b4.Te6edf3titleTb4b4b4)Tb4b4b4, Te6edf3leadingIcon Tff7b72= Tffa657itTb4b4b4.Te6edf3iconTb4b4b4, Te6edf3enabled Tff7b72= Te6edf3enabledTb4b4b4) Tb4b4b4{
Te6edf3onRouteClickTb4b4b4(Tffa657itTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Te6edf3TitledCardTb4b4b4(Te6edf3title Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3module_settingsTb4b4b4)Tb4b4b4, Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3top Tff7b72= T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3isManagedTb4b4b4) Tb4b4b4{
Te6edf3ManagedMessageTb4b4b4(Tb4b4b4)
Tb4b4b4}

Te6edf3modulesTb4b4b4.Te6edf3forEach Tb4b4b4{
Te6edf3SettingsItemTb4b4b4(Te6edf3text Tff7b72= Te6edf3stringResourceTb4b4b4(Tffa657itTb4b4b4.Te6edf3titleTb4b4b4)Tb4b4b4, Te6edf3leadingIcon Tff7b72= Tffa657itTb4b4b4.Te6edf3iconTb4b4b4, Te6edf3enabled Tff7b72= Te6edf3enabledTb4b4b4) Tb4b4b4{
Te6edf3onRouteClickTb4b4b4(Tffa657itTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tff7b72if Tb4b4b4(Te6edf3stateTb4b4b4.Te6edf3isLocalTb4b4b4) Tb4b4b4{
Te6edf3TitledCardTb4b4b4(Te6edf3title Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3backup_restoreTb4b4b4)Tb4b4b4, Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3top Tff7b72= T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3isManagedTb4b4b4) Tb4b4b4{
Te6edf3ManagedMessageTb4b4b4(Tb4b4b4)
Tb4b4b4}

Te6edf3SettingsItemTb4b4b4(
Te6edf3text Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3import_configurationTb4b4b4)Tb4b4b4,
Te6edf3leadingIcon Tff7b72= Te6edf3IconsTb4b4b4.Te6edf3DefaultTb4b4b4.Te6edf3DownloadTb4b4b4,
Te6edf3enabled Tff7b72= Te6edf3enabledTb4b4b4,
Te6edf3onClick Tff7b72= Te6edf3onImportTb4b4b4,
Tb4b4b4)
Te6edf3SettingsItemTb4b4b4(
Te6edf3text Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3export_configurationTb4b4b4)Tb4b4b4,
Te6edf3leadingIcon Tff7b72= Te6edf3IconsTb4b4b4.Te6edf3DefaultTb4b4b4.Te6edf3UploadTb4b4b4,
Te6edf3enabled Tff7b72= Te6edf3enabledTb4b4b4,
Te6edf3onClick Tff7b72= Te6edf3onExportTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}

Te6edf3TitledCardTb4b4b4(Te6edf3title Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3administrationTb4b4b4)Tb4b4b4, Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3top Tff7b72= T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3AdminRouteTb4b4b4.Te6edf3entriesTb4b4b4.Te6edf3forEach Tb4b4b4{ Te6edf3route Tff7b72-Tff7b72>
Tff7b72var Te6edf3showDialog Tff7b72by Te6edf3remember Tb4b4b4{ Te6edf3mutableStateOfTb4b4b4(Tff7b72falseTb4b4b4) Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3showDialogTb4b4b4) Tb4b4b4{
Te6edf3WarningDialogTb4b4b4(
Te6edf3title Tff7b72= Ta5d6ff"Tffd700${Te6edf3stringResourceTb4b4b4(Te6edf3routeTb4b4b4.Te6edf3titleTb4b4b4)Tffd700}Ta5d6ff?Ta5d6ff"Tb4b4b4,
Te6edf3onDismiss Tff7b72= Tb4b4b4{ Te6edf3showDialog Tff7b72= Tff7b72false Tb4b4b4}Tb4b4b4,
Te6edf3onConfirm Tff7b72= Tb4b4b4{ Te6edf3onRouteClickTb4b4b4(Te6edf3routeTb4b4b4) Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}

Te6edf3SettingsItemTb4b4b4(
Te6edf3enabled Tff7b72= Te6edf3enabledTb4b4b4,
Te6edf3text Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3routeTb4b4b4.Te6edf3titleTb4b4b4)Tb4b4b4,
Te6edf3leadingIcon Tff7b72= Te6edf3routeTb4b4b4.Te6edf3iconTb4b4b4,
Te6edf3trailingIcon Tff7b72= Tff7b72nullTb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3showDialog Tff7b72= Tff7b72true
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Te6edf3TitledCardTb4b4b4(Te6edf3title Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3advanced_titleTb4b4b4)Tb4b4b4, Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3top Tff7b72= T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3isManagedTb4b4b4) Tb4b4b4{
Te6edf3ManagedMessageTb4b4b4(Tb4b4b4)
Tb4b4b4}

Te6edf3SettingsItemTb4b4b4(
Te6edf3text Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3clean_node_database_titleTb4b4b4)Tb4b4b4,
Te6edf3leadingIcon Tff7b72= Te6edf3IconsTb4b4b4.Te6edf3RoundedTb4b4b4.Te6edf3CleaningServicesTb4b4b4,
Te6edf3enabled Tff7b72= Te6edf3enabledTb4b4b4,
Te6edf3onClick Tff7b72= Tb4b4b4{ Te6edf3onNavigateTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3CleanNodeDbTb4b4b4) Tb4b4b4}Tb4b4b4,
Tb4b4b4)

Te6edf3SettingsItemTb4b4b4(
Te6edf3text Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3debug_panelTb4b4b4)Tb4b4b4,
Te6edf3leadingIcon Tff7b72= Te6edf3IconsTb4b4b4.Te6edf3RoundedTb4b4b4.Te6edf3BugReportTb4b4b4,
Te6edf3enabled Tff7b72= Te6edf3enabledTb4b4b4,
Te6edf3onClick Tff7b72= Tb4b4b4{ Te6edf3onNavigateTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3DebugPanelTb4b4b4) Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}

Tf0883e@PreviewTb4b4b4(Te6edf3showBackground Tff7b72= Tff7b72trueTb4b4b4)
Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffRadioSettingsScreenPreviewTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3AppTheme Tb4b4b4{
Te6edf3RadioConfigItemListTb4b4b4(
Te6edf3state Tff7b72= Te6edf3RadioConfigStateTb4b4b4(Te6edf3isLocal Tff7b72= Tff7b72trueTb4b4b4, Te6edf3connected Tff7b72= Tff7b72trueTb4b4b4)Tb4b4b4,
Te6edf3isManaged Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3onNavigate Tff7b72= Tb4b4b4{ Te6edf3_ Tff7b72-Tff7b72> Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}

Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffManagedMessageTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_device_managedTb4b4b4)Tb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3horizontal Tff7b72= T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4, Te6edf3vertical Tff7b72= T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3StatusRedTb4b4b4,
Tb4b4b4)
Tb4b4b4}

Tf0883e@PreviewTb4b4b4(Te6edf3showBackground Tff7b72= Tff7b72trueTb4b4b4)
Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffRadioSettingsScreenManagedPreviewTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3AppTheme Tb4b4b4{
Te6edf3RadioConfigItemListTb4b4b4(
Te6edf3state Tff7b72= Te6edf3RadioConfigStateTb4b4b4(Te6edf3isLocal Tff7b72= Tff7b72trueTb4b4b4, Te6edf3connected Tff7b72= Tff7b72trueTb4b4b4)Tb4b4b4,
Te6edf3isManaged Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3onNavigate Tff7b72= Tb4b4b4{ Te6edf3_ Tff7b72-Tff7b72> Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}

Served by rngit 1.5.2 - Generated in 0.22s